Transformación del modelo E-R al modelo relacional
El modelo Entidad-Relación representa el diseño conceptual de una base de datos. Sin embargo, los SGBD no trabajan directamente con diagramas E-R, sino con tablas relacionales.
Transformar un modelo E-R significa convertir entidades, atributos y relaciones en estructuras SQL reales.
Objetivo de la transformación
- Convertir entidades en tablas.
- Convertir atributos en columnas.
- Transformar relaciones en claves foráneas.
- Aplicar restricciones de integridad.
CREATE TABLE Alumno (
id_alumno INT PRIMARY KEY,
nombre VARCHAR(100),
apellidos VARCHAR(100)
);
Entidades → Tablas
Cada entidad fuerte del modelo E-R se transforma en una tabla. Sus atributos pasan a convertirse en columnas.
| Entidad E-R | Tabla relacional |
|---|---|
| Alumno | tabla alumno |
| Profesor | tabla profesor |
| Producto | tabla producto |
CREATE TABLE Profesor (
id_profesor INT PRIMARY KEY,
nombre VARCHAR(100),
especialidad VARCHAR(100)
);
Relaciones: claves foráneas o tablas intermedias
Relaciones 1:N
Las relaciones uno a muchos se implementan mediante claves foráneas.
CREATE TABLE Asignatura (
id_asignatura INT PRIMARY KEY,
nombre VARCHAR(100),
id_profesor INT,
FOREIGN KEY(id_profesor)
REFERENCES Profesor(id_profesor)
);
Relaciones N:M
Necesitan una tabla intermedia.
CREATE TABLE Matricula (
id_alumno INT,
id_asignatura INT,
nota DECIMAL(4,2),
PRIMARY KEY(id_alumno,id_asignatura)
);
| Tipo | Implementación |
|---|---|
| 1:N | Foreign Key |
| N:M | Tabla puente |
Atributos multivaluados o compuestos
Una columna no puede almacenar listas ni conjuntos.
Problema
telefonos = "600123123,677888999"
Esto viola la atomicidad.
Solución
CREATE TABLE Telefonos_Cliente (
id_telefono INT PRIMARY KEY,
telefono VARCHAR(20),
id_cliente INT,
FOREIGN KEY(id_cliente)
REFERENCES Cliente(id_cliente)
);
Restricciones de integridad
Integridad de entidad
Las claves primarias no pueden ser nulas ni repetidas.
Integridad referencial
Las claves foráneas deben apuntar a registros existentes.
Integridad de dominio
Cada columna acepta solo valores válidos.
CREATE TABLE Alumno (
id_alumno INT PRIMARY KEY,
edad INT CHECK (edad >= 0)
);
| Tipo | Función |
|---|---|
| Entidad | Evita PK duplicadas |
| Referencial | Garantiza relaciones válidas |
| Dominio | Valida datos |
Normalización: 1FN, 2FN y 3FN
La normalización organiza las tablas para reducir redundancia y evitar anomalías.
Objetivos
- Eliminar duplicidades.
- Mejorar integridad.
- Evitar inconsistencias.
- Facilitar mantenimiento.
Primera Forma Normal (1FN): Atomicidad
La 1FN exige que cada columna tenga valores atómicos.
Incorrecto
telefonos = "600111111,677222222"
Correcto
id_cliente | telefono
1 | 600111111
1 | 677222222
Segunda Forma Normal (2FN): Dependencia total
Todos los atributos no clave deben depender completamente de la clave primaria.
Pedidos(
id_pedido,
id_producto,
nombre_cliente
)
nombre_cliente depende solo de id_pedido, no de toda la clave compuesta.
Tercera Forma Normal (3FN): No dependencias transitivas
Ningún atributo no clave debe depender de otro atributo no clave.
Empleado(
id_empleado,
nombre,
id_departamento,
nombre_departamento
)
nombre_departamento depende de id_departamento, no directamente de la PK.
Solución
Departamento(
id_departamento,
nombre_departamento
)
Forma Normal de Boyce-Codd (BCNF)
BCNF es una versión más estricta de la 3FN.
Regla principal
Todo determinante debe ser una clave candidata.
camion → conductor
Si camion no es clave candidata, la tabla viola BCNF.
La dependencia funcional
Existe dependencia funcional cuando un atributo determina otro.
id_departamento → jefe_departamento
Para cada departamento existe un único jefe.
Importancia
- Detectar redundancias.
- Aplicar normalización.
- Identificar anomalías.
Relación entre BCNF y 3FN
| 3FN | BCNF |
|---|---|
| Permite algunas excepciones | No permite excepciones |
| Más flexible | Más estricta |
| Muy utilizada | Sistemas críticos |
Ventajas y desventajas de BCNF
Ventajas
- Coherencia absoluta.
- Menos inconsistencias.
- Mantenimiento más sencillo.
- Integridad más sólida.
Desventajas
- Más tablas.
- Más JOINs.
- Consultas más complejas.
Ejemplos de estudio
Tienda online
El sistema original repetía datos de clientes y productos.
Después de normalizar
- Cliente
- Producto
- Pedido
- Detalle_Pedido
CREATE TABLE Detalle_Pedido (
id_pedido INT,
id_producto INT,
cantidad INT
);
Empresa de transporte
La dependencia:
camion → conductor
provocaba violación BCNF.
Solución
Camiones(camion, conductor)
Rutas(camion, ruta)
Consejos profesionales
- Normaliza antes de insertar datos reales.
- Detecta redundancia desde el diseño.
- Usa nomenclatura coherente.
- Documenta relaciones y dependencias.
- Valida claves foráneas periódicamente.
- Prueba el esquema con datos reales.
Herramientas recomendadas
- MySQL Workbench
- dbdiagram.io
- pgModeler
- DBeaver
- Oracle SQL Developer Data Modeler